package model

import "go-devops/dao"

type Task struct {
	Id         string `json:"id" gorm:"primaryKey"`
	Name       string `json:"name"`
	Namespace  string `json:"namespace"`
	Note       string `json:"note"`
	FlowData   string `json:"flowData"`
	TaskData   string `json:"taskData"`
	BatchId    int64  `json:"batchId"`
	CreateTime string `json:"createTime"`
}

func (Task) TableName() string {
	return "task"
}

func QueryTaskListByNamespace(namespace string) (taskList []*Task, err error) {
	if err := dao.DB.Where("namespace = ?", namespace).Find(&taskList).Error; err != nil {
		return nil, err
	}
	return taskList, nil
}

func QueryTaskCountByNamespace(namespace string) (count int64, err error) {
	if err := dao.DB.Model(&Task{}).Where("namespace = ?", namespace).Count(&count).Error; err != nil {
		return 0, err
	}
	return count, nil
}

func QueryTaskCount(name string, namespace string) (count int64, err error) {
	err = dao.DB.Model(&Task{}).Where("name = ? and namespace = ?", name, namespace).Count(&count).Error
	return count, err
}

func SaveTask(task *Task) (err error) {
	return dao.DB.Save(&task).Error
}

func UpdateTask(task *Task) (err error) {
	return dao.DB.Model(&task).Updates(task).Error
}

func BatchDeleteTask(list []*Task) (err error) {
	return dao.DB.Delete(&list).Error
}

func QueryTaskById(id string) (task *Task, err error) {
	if err := dao.DB.Where("id = ?", id).First(&task).Error; err != nil {
		return nil, err
	}
	return task, err
}

type TaskTemplate struct {
	Id         int64  `json:"id"`
	Name       string `json:"name"`
	FlowData   string `json:"flowData"`
	CreateTime string `json:"createTime"`
}

func (TaskTemplate) TableName() string {
	return "task_template"
}

func SaveTaskTemplate(taskTemplate *TaskTemplate) (err error) {
	return dao.DB.Save(&taskTemplate).Error
}

func DeleteTemplate(id int64) (err error) {
	return dao.DB.Delete(&TaskTemplate{}, id).Error
}

func QueryTaskTemplateList() (list []*TaskTemplate, err error) {
	err = dao.DB.Find(&list).Error
	return list, err
}
